/*
 * @Author: szx
 * @Date: 2021-11-01 11:44:49
 * @LastEditTime: 2021-11-01 11:54:45
 * @Description:
 * @FilePath: \leetcode\300-399\383\383.cpp
 */
#include <iostream>
#include <vector>
using namespace std;
// class Solution {
//    public:
//     bool canConstruct(string ransomNote, string magazine) {
//         int n = ransomNote.length();
//         int m = magazine.length();
//         if (n > m) {
//             return false;
//         }
//         int arr[26]{0};
//         for (int i = 0; i < n; i++) {
//             arr[ransomNote[i] - 'a']--;
//             arr[magazine[i] - 'a']++;
//         }
//         for (int i = n; i < m; i++) {
//             arr[magazine[i] - 'a']++;
//         }
//         for (int i : arr) {
//             if (i < 0) {
//                 return false;
//             }
//         }
//         return true;
//     }
// };

class Solution {
   public:
    bool canConstruct(string ransomNote, string magazine) {
        int n = ransomNote.length();
        int m = magazine.length();
        if (n > m) {
            return false;
        }
        int arr[26]{0};
        for (int i = 0; i < m; i++) {
            arr[magazine[i] - 'a']++;
        }
        for (int i = 0; i < n; i++) {
            arr[ransomNote[i] - 'a']--;
            if (arr[ransomNote[i] - 'a'] < 0) {
                return false;
            }
        }
        return true;
    }
};

int main() { return 0; }